//table tools
var Tools = {
    page: function (opt) {
        $("#dataTables").css({"width":"100%"});
        var table = $("#" + opt.tableId).dataTable({
            "iDisplayLength": opt.iDisplayLength,//每页显示10条数据
            "bAutoWidth": false,//宽度是否自动，感觉不好使的时候关掉试试
            "bLengthChange": false,
            "bFilter": opt.bFilter,
            /*"type": "post",*/
            "oLanguage": {//下面是一些汉语翻译
                "sSearch": "搜索",
                "sLengthMenu": "每页显示 _MENU_ 条记录",
                "sZeroRecords": "没有检索到数据",
                "sInfo": "显示 _START_ 至 _END_ 条 &nbsp;&nbsp;共 _TOTAL_ 条",
                "sInfoFiltered": "(筛选自 _MAX_ 条数据)",
                "sInfoEmtpy": "没有数据",
                "sProcessing": "正在加载数据...",
                /*"sProcessing": "<img src='{{rootUrl}}global/img/ajaxLoader/loader01.gif' />", //这里是给服务器发请求后到等待时间显示的 加载gif*/
                "oPaginate":
                {
                    "sFirst": "首页",
                    "sPrevious": "前一页",
                    "sNext": "后一页",
                    "sLast": "末页"
                }
            },
            "bProcessing": true, //开启读取服务器数据时显示正在加载中……特别是大数据量的时候，开启此功能比较好
            "bServerSide": true, //开启服务器模式，使用服务器端处理配置datatable。注意：sAjaxSource参数也必须被给予为了给datatable源代码来获取所需的数据对于每个画。 这个翻译有点别扭。开启此模式后，你对datatables的每个操作 每页显示多少条记录、下一页、上一页、排序（表头）、搜索，这些都会传给服务器相应的值。
            "sAjaxSource": opt.postUrl, //给服务器发请求的url
            "aoColumns":opt.aoColumns ,
            "aoColumnDefs": opt.aoColumnDefs,
            "aaSorting": opt.aaSorting, //默认排序
            "fnServerData": function (sSource, aoData, fnCallback) {
                $.ajax({
                    "dataType": 'json',
                    "type": "post",
                    "data": aoData,
                    "url": sSource,
                    "success": fnCallback
                });
            }
//                    "fnRowCallback": function(nRow, aData, iDisplayIndex) {// 当创建了行，但还未绘制到屏幕上的时候调用，通常用于改变行的class风格
//                        if (aData.status == 1) {
//                            $('td:eq(8)', nRow).html("<span class='text-error'>审核中</span>");
//                        } else if (aData.status == 4) {
//                            $('td:eq(8)', nRow).html("<span class='text-error'>审核失败</span>");
//                        } else if (aData.active == 0) {
//                            $('td:eq(8)', nRow).html("<span>隐藏</span>");
//                        } else {
//                            $('td:eq(8)', nRow).html("<span class='text-success'>显示</span>");
//                        }
//                        $('td:eq(9)', nRow).html("<a href='' user_id='" + aData.user_id + "' class='ace_detail'>详情</a>");
//                        if (aData.status != 1 && aData.status != 4 && aData.active == 0) {
//                            $("<a class='change_ace_status'>显示</a>").appendTo($('td:eq(9)', nRow));
//                        } else if (aData.status != 1 && aData.status != 4 && aData.active == 1) {
//                            $("<a class='change_ace_status'>隐藏</a>").appendTo($('td:eq(9)', nRow));
//                        }
//                        return nRow;
//                    },
            /* "fnInitComplete": function(oSettings, json) { //表格初始化完成后调用 在这里和服务器分页没关系可以忽略
             $("input[aria-controls='DataTables_Table_0']").attr("placeHolder", "请输入高手用户名");
             }*/
        });

        return table;
    }
};
(function () {
    function utils() {
        var submitForm = function (formid,url, data, callback) {
            $("#"+formid).ajaxSubmit({
                type: 'post', // 提交方式 get/post
                url: url, // 需要提交的 url
               //da ta: JSON.stringify(data),
                //contentType:'application/json;charset=UTF-8',
                data: data,
                dataType: 'json',
                success: function(result) { // data 保存提交后返回的数据，一般为 json 数据
                    // 此处可对 data 作相关处理
                    if (typeof callback === 'function') {
                        callback(result);
                    }
                }
            });
        };
        var ajaxGetData = function (url, data, type, callback) {
            var ajaxOpt = {};
            if (type) {
                type = type.toUpperCase();
            }
            switch (type) {
                case 'GET':
                    ajaxOpt = {
                        url: url,
                        type: 'GET',
                        timeout: 10000
                    };
                    break;
                case 'POST':
                    ajaxOpt = {
                        url: url,
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        data: JSON.stringify(data),
                        timeout: 10000
                    };
                    break;
                case 'POSTY':
                    ajaxOpt = {
                        url: url,
                        type: 'POST',
                        data: data,
                        timeout: 10000
                    };
                    break;
                default:
                    ajaxOpt = {
                        url: url,
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        data: JSON.stringify(data),
                        timeout: 10000
                    };
            }
            ajaxOpt = objConect(ajaxOpt, {
                success: function (res) {
                    res = objConect(res, data);
                    if (typeof callback === 'function') {
                        callback.call(this, res);
                    }
                },
                error: function (xhr, status, error) {
                    switch (status) {
                        case 'error':
                            console.log('系统错误,请刷新重试');
                            break;
                        case 'timeout':
                            console.log('请求超时,请刷新重试');
                            break;
                        default:
                            console.log('系统错误,请刷新重试');
                            break;
                    }
                }
            })
            $.ajax(ajaxOpt);
        };

        //获取表单值
        var getFormData = function (formId) {
            return formDataFormat($('#' + formId).serializeArray());
        };
        //表单数据转换
        var formDataFormat = function (formData) {
            var data = {};
            formData.map(function (item) {
                if (isNotEmpty(item.value)) {
                    data[item.name] = item.value;
                }
            });
            return data;
        };
        var isNotEmpty = function (currval) {
            if (currval == '' || currval == null || currval.length == 0 || currval == '0' || currval == undefined) {
                return false;
            }
            return true;
        }
        var objConect = function (obj1, obj2) {
            return $.extend({}, obj1, obj2);
        };
        var checkAllBox = function (classattr) {
            $(".check-link").each(function (index) {
                if (index != 0) {
                    $(this).find("i").removeAttr("class").attr("class", classattr)
                }
            });
        }
        return {
            submitForm: submitForm,
            ajaxGetData: ajaxGetData,
            formDataFormat: formDataFormat,
            getFormData: getFormData,
            objConect: objConect,
            checkAllBox: checkAllBox
        }
    }

    window.utils = utils();
})();